package com.zw.pm.base;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zw.pm.common.JsonResult;
import com.zw.pm.common.Page;
import com.zw.pm.common.Table;
import lombok.extern.slf4j.Slf4j;

import java.util.List;

/**
 * @Description: 控制层 基类
 *
 * @author: China.sgl
 * @Date: 2019/9/18 08:52
 */
@Slf4j
public class BaseController {

    /**
     * 封装分页
     */
    public void startPage() {
        Page page = Page.getPage();
        PageHelper.startPage(page.getPageNum(), page.getPageSize());
    }

    /**
     * 响应返回信息
     *
     * @param data  列表数据
     * @return 模型
     */
    @SuppressWarnings("unchecked")
    public Table getTableModel(List<?> data) {
        Table model = new Table();
        model.setRows(data);
        model.setTotal(new PageInfo(data).getTotal());
        return model;
    }
    /**
     * 响应返回信息
     *
     * @param data  列表数据
     * @return 模型
     */
    @SuppressWarnings("unchecked")
    public Table getTableModel(List<?> data,int falseTotal) {
        Table model = new Table();
        model.setRows(data);
        model.setTotal(new PageInfo(data).getTotal());
        model.setFalseTotal(falseTotal);
        return model;
    }


    /**
     * 返回JsonResult
     *
     * @param data  列表数据
     * @return JsonResult
     */
    public JsonResult jsonResult(List<?> data) {
        return success().setData(getTableModel(data));
    }

    /**
     * 返回JsonResult
     *
     * @param data  列表数据
     * @return JsonResult
     */
    public JsonResult jsonResult(List<?> data,int falseTotal) {
        return success().setData(getTableModel(data,falseTotal));
    }

    /**
     * 返回JsonResult
     *
     * @param rows 影响行数
     * @return JsonResult
     */
    public JsonResult jsonResult(int rows) {
        return JsonResult.rowNumber(rows);
    }

    /**
     * 返回JsonResult
     *
     * @param result 布尔值
     * @return JsonResult
     */
    public JsonResult jsonResult(boolean result) {
        return JsonResult.is(result);
    }

    /**
     * 返回JsonResult
     *
     * @param result 对象实例
     * @return JsonResult
     */
    public JsonResult isNull(Object result) {
        return JsonResult.isNull(result);
    }

    /**
     * 返回JsonResult
     *
     * @param result 对象实例
     * @return JsonResult
     */
    public JsonResult isNotNull(Object result) {
        return JsonResult.isNotNull(result);
    }

    /**
     * 返回正确结果
     *
     * @return JsonResult
     */
    public JsonResult success() {
        return JsonResult.success();
    }

    /**
     * 返回正确结果
     *
     * @param msg 消息
     * @return JsonResult
     */
    public JsonResult success(String msg) {
        return JsonResult.success(msg);
    }

    /**
     * 返回错误结果
     *
     * @return JsonResult
     */
    public JsonResult error() {
        return JsonResult.fail();
    }

    /**
     * 返回错误结果
     *
     * @param msg 消息
     * @return JsonResult
     */
    public JsonResult error(String msg) {
        return JsonResult.fail(msg);
    }

    /**
     * 跳转
     *
     * @param url 地址
     * @return 跳转字符串
     */
    public String redirect(String url) {
        return String.format("redirect:%s", url);
    }
}
